﻿// Decompiled with JetBrains decompiler
// Type: MCM.Abstractions.FluentBuilder.BaseSettingsBuilder
// Assembly: MCMv5, Version=5.10.2.0, Culture=neutral, PublicKeyToken=null
// MVID: 7AB326B9-B2B4-41C2-9177-68E944071101
// Assembly location: D:\steam\steamapps\workshop\content\261550\2859238197\bin\Win64_Shipping_Client\MCMv5.dll

using BUTR.DependencyInjection;
using MCM.Abstractions.Base.Global;
using MCM.Abstractions.Base.PerCampaign;
using MCM.Abstractions.Base.PerSave;
using System;
using System.ComponentModel;

#nullable enable
namespace MCM.Abstractions.FluentBuilder
{
  public abstract class BaseSettingsBuilder : ISettingsBuilder
  {
    public static ISettingsBuilder? Create(string id, string displayName)
    {
      return GenericServiceProvider.GetService<ISettingsBuilderFactory>()?.Create(id, displayName);
    }

    public abstract ISettingsBuilder SetFolderName(string value);

    public abstract ISettingsBuilder SetSubFolder(string value);

    public abstract ISettingsBuilder SetFormat(string value);

    public abstract ISettingsBuilder SetUIVersion(int value);

    public abstract ISettingsBuilder SetSubGroupDelimiter(char value);

    public abstract ISettingsBuilder SetOnPropertyChanged(PropertyChangedEventHandler value);

    public abstract ISettingsBuilder CreateGroup(
      string name,
      Action<ISettingsPropertyGroupBuilder> builder);

    public abstract ISettingsBuilder CreatePreset(
      string id,
      string name,
      Action<ISettingsPresetBuilder> builder);

    public abstract ISettingsBuilder WithoutDefaultPreset();

    public abstract FluentGlobalSettings BuildAsGlobal();

    public abstract FluentPerSaveSettings BuildAsPerSave();

    public abstract FluentPerCampaignSettings BuildAsPerCampaign();
  }
}
